/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package semac.control;

import java.util.ArrayList;
import java.sql.*;
import java.util.GregorianCalendar;
import java.io.IOException;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import semac.entidades.*;

/**
 *
 * @author Trinity
 */
public class CtrlCursos {

//
private ArrayList<Curso> listCursos;  //:List<Curso>
private Conexion connection;
private String query;
private ResultSet resultado;
private HttpServletRequest request;
        

public CtrlCursos() throws IOException, ParserConfigurationException, SAXException{
        request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
        String urlFile =  request.getRealPath("/")+ "/WEB-INF/dataBase.xml";
        connection =  new Conexion(urlFile);
}


//Método que permite el nuevo ingreso de un nuevo curso
public void insertCurso(Curso nuevoCurso) throws ClassNotFoundException,SQLException{
    connection.startConnection();
    query = "insert into semac.curso (codigoNivel, codigoModalidad " +
            "fechacreacion,fechamodificacion,codigo_cuenta)"
            + "values(" + nuevoCurso.getCodigoNivel() + "," + nuevoCurso.getCodigoJornada()
                + "," + nuevoCurso.getCodigoModalidad() + "," + nuevoCurso.getFechaCreacion()
                + "," + nuevoCurso.getFechaModificacion() + "," + nuevoCurso.getUltimoAcceso() + ")";
    connection.execute(query);
    connection.closeConnection();

}

//Metodo que permite la actualizacion de nuevos cursos
public void updateCurso(Curso curso) throws ClassNotFoundException,SQLException{
    connection.startConnection();
    query = "update semac.curso" +
            " set codigo_nivel = '" + curso.getCodigoNivel() + ","
            + "codigo_jornada = '" + curso.getCodigoJornada() + ","
            + "codigo_modalidad = '" + curso.getCodigoModalidad() + ","
            + "fechacreacion_curso = '" + curso.getFechaCreacion() + ","
		    + "fechamodificacion = '" + curso.getFechaModificacion()
		    + "ultimoacceso = " + curso.getUltimoAcceso() + ","
            + "where codigocurso = " + curso.getCodigo();
    connection.execute(query);
    connection.closeConnection();
}

//Metodo que devuelve verdadero o falso dependiendo si existe o no el curso
public boolean existCurso(int curso)throws ClassNotFoundException,SQLException{
    connection.startConnection();
    query = "select codigo_curso"
            + "from semac.curso"
            + "where codigo_curso = '" + curso + ",";
    resultado = connection.execute(query);
    resultado.next();
    int codigoCurso = resultado.getInt("codigo_Curso");
    connection.closeConnection();
    if (curso == codigoCurso)
        return true;
    return false;
   
}

//Metodo por el que se ingresa la jornada de un curso
public void insertJornadaCurso(String descripcion, Curso nuevaJornada) throws ClassNotFoundException,
        SQLException{
    connection.startConnection();
    query = "insert into semac.curso"
            + "values(" + descripcion + "," + nuevaJornada.getFechaCreacion()+
            "," + nuevaJornada.getFechaModificacion() + "," + nuevaJornada.getUltimoAcceso() + ")";
    try{
    connection.execute(query);
    }catch(Exception e){}
    connection.closeConnection();


}

//Metodo que permite el ingreso de un nivel del curso
public void insertNivelCurso(String descripcion, Curso nuevoNivel) throws ClassNotFoundException,
        SQLException{
    connection.startConnection();
    query = "insert into semac.curso"
            + "values(" + descripcion + "," + nuevoNivel.getFechaCreacion()+
            "," + nuevoNivel.getFechaModificacion() + "," + nuevoNivel.getUltimoAcceso() + ")";
    try{
    connection.execute(query);
    }catch(Exception e){}
    connection.closeConnection();
}

//Metodo por el que se ingresa el tipo de modalidad del curso
public void insertModalidadCurso(String descripcion, Curso nuevaModalidad) throws ClassNotFoundException,
        SQLException{
    connection.startConnection();
    query = "insert into semac.curso"
            + "values(" + descripcion + "," + nuevaModalidad.getFechaCreacion()+
            "," + nuevaModalidad.getFechaModificacion() + "," + nuevaModalidad.getUltimoAcceso() + ")";
    try{
    connection.execute(query);
    }catch (Exception e){}
    connection.closeConnection();

}

//-------Metodos para JornadaCurso-------

public ArrayList<Curso> getJornadaCursos()throws ClassNotFoundException, SQLException{
        Curso curso;
        connection.startConnection();
        query = "select *"
                + " from semac.curso";

        while (resultado.next()){
            int codigoNivel = resultado.getInt("codigo_Nivel");
            int codigoJornada = resultado.getInt("codigo_Jornada");
            int codigoModalidad = resultado.getInt("codigo_Modalidad");
            Date tempDate = resultado.getDate("fechacreacion");
            GregorianCalendar fechaCreacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(),
                    tempDate.getDate());
            tempDate = resultado.getDate("fechamodificacion");
            GregorianCalendar fechaModificacion = new GregorianCalendar(tempDate.getYear(),
                    tempDate.getMonth(), tempDate.getDate());
            int ultimoAcceso = resultado.getInt("codigo_cuenta");
            curso = new Curso(codigoNivel,codigoJornada, codigoModalidad, fechaCreacion,
                    fechaModificacion,ultimoAcceso);
            listCursos.add(curso);
        }
        connection.closeConnection();
        return listCursos;

}

public int removeJornadaCurso(int codigoJornadaCurso)throws ClassNotFoundException, SQLException{
    return 0;
}

//-------Metodos para NivelCurso-------
public ArrayList<Curso> getNivelCursos()throws ClassNotFoundException, SQLException{
        Curso curso;
        connection.startConnection();
        query = "select *"
                + " from semac.curso";

        while (resultado.next()){
            int codigoNivel = resultado.getInt("codigo_Nivel");
            int codigoJornada = resultado.getInt("codigo_Jornada");
            int codigoModalidad = resultado.getInt("codigo_Modalidad");
            Date tempDate = resultado.getDate("fechacreacion");
            GregorianCalendar fechaCreacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            tempDate = resultado.getDate("fechamodificacion");
            GregorianCalendar fechaModificacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            int ultimoAcceso = resultado.getInt("codigo_cuenta");
            curso = new Curso(codigoNivel,codigoJornada, codigoModalidad, fechaCreacion,
                    fechaModificacion,ultimoAcceso);
            listCursos.add(curso);
        }
        connection.closeConnection();
        return listCursos;
    
}

public int removeNivelCurso(int codigoNivelCurso)throws ClassNotFoundException, SQLException{
    return 0;
}

//-------Metodos para ModalidadCurso-------
public ArrayList<Curso> getModalidadCursos() throws ClassNotFoundException, SQLException{
        Curso curso;
        connection.startConnection();
        query = "select *"
                + " from semac.curso";

        while (resultado.next()){
            int codigoNivel = resultado.getInt("codigo_Nivel");
            int codigoJornada = resultado.getInt("codigo_Jornada");
            int codigoModalidad = resultado.getInt("codigo_Modalidad");
            Date tempDate = resultado.getDate("fechacreacion");
            GregorianCalendar fechaCreacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            tempDate = resultado.getDate("fechamodificacion");
            GregorianCalendar fechaModificacion = new GregorianCalendar(tempDate.getYear(), tempDate.getMonth(), tempDate.getDate());
            int ultimoAcceso = resultado.getInt("codigo_cuenta");
            curso = new Curso(codigoNivel,codigoJornada, codigoModalidad, fechaCreacion,
                    fechaModificacion,ultimoAcceso);
            listCursos.add(curso);
        }
        connection.closeConnection();
        return listCursos;

    
}

public int removeModalidadCurso(int codigoModalidadCurso)throws ClassNotFoundException, SQLException{
    return 0;
}



}
